package com.bang.study.day01.test;

import com.bang.study.day01.ListNode;

/**
 * @Auther: Bang
 * @Date: 2019/9/10 20:14
 * @Description: leetcode 203. 移除链表元素
 * 删除链表中等于给定值 val 的所有节点。
 * 示例:
 * 输入: 1->2->6->3->4->5->6, val = 6
 * 输出: 1->2->3->4->5
 */
public class Sulution203_copy {

    /**
     * 采用递归
     * 递归调用,移除和val相同的节点
     * @param head 头结点
     * @param val
     * @return
     */
    public static ListNode removeElements(ListNode head, int val) {
        // 递归方法出口
        if (null == head) {
            return null;
        }
        head.next = removeElements(head.next, val); // 递归调用
        if (head.val == val) {
            // 判断当前的头结点存储的值是否等于value,等于则移除头结点
            return head.next;
        } else {
            // 否,则直接返回
            return head;
        }

    }

    public static void main(String[] args) {
        ListNode listNode = new ListNode(new int[]{1, 2, 3, 6, 4, 5, 6});
        System.out.println(listNode);
        ListNode res = removeElements(listNode, 6);
        System.out.println(res);
    }
}
